1. Field of the Invention
The present invention relates to general computer systems and/or computer networks. More particularly, the present invention relates to a method for efficiently transferring files from a source location to a destination location within a general computer system and/or computer network.
2. Description of Related Art
In a typical computer system, the task of transferring one or more files generally involves two closely coordinated processes: a read process and a write process. For example, if a user wishes to transfer a file A and a file B from a source location to a destination location, the computer system, through the read process, reads the first file (e.g., file A) from the source location to a memory buffer. Once the first file is stored in the buffer, the computer system, through the write process, writes the first file from the memory buffer to the desired destination location. When the write process completes this task, the computer system repeats the operation for the second file (i.e., file B). For the purpose of the present discussion, it will be understood that a file transfer operation involves copying or moving a file from a source location to a destination location.
Traditionally, file transfer operations are given a high priority by the computer system, such that once a file transfer operation has been initiated, the user is prevented from interacting with the computer system until the file transfer operation is complete. That is because the computer system's CPU is dedicated to completing the file transfer operation and is, therefore, unavailable to handle concurrent user initiated operations. In many computer systems, the fact that the CPU is temporarily unavailable to handle concurrent user initiated operations is indicated by an "hourglass" icon on the computer system's display.
There are numerous disadvantages to the way in which computer systems traditionally transfer files. For example, transferring individual files one file at a time, as described above, from a source location to a buffer and then to a destination location may take an excessively long period of time to complete, particularly when the operation involves hundreds of files. Moreover, the computer system's ability to complete the operation may be further impacted if the access speed of the source and destination media differ, thereby causing either the read process or the write process to slow down the progress of the other.
Another disadvantage associated with transferring files, as described above, relates to the fact that the computer system must attach a header to each file being transferred. Attaching a header to each file, as one skilled in the art will appreciate, increases the amount of overhead that must be transferred along with the file information. As the number of files to be transferred increases, and as the average size of each file decreases, the ratio of overhead to file data increases proportionally. This also has the effect of slowing down a file transfer operation.
Yet another disadvantage relates to the fact that traditionally, file transfer operations are granted a high priority by the computer system, such that the user is precluded from interacting with the computer system until after the completion of the file transfer operation. This may be especially problematic if the file transfer operation takes a relatively long period of time to complete.